import json

from api_test_framework.config.settings import DB_CONFIG
from loguru import logger

from api_test_framework.data.envi_data import EnviData
from api_test_framework.utils.handle_mysql import HandleMysql


def pre_sql(sql_data):
    # 第一步：读取出来，是字符串 json串
    if sql_data is None:
        return
    logger.info("==================前置sql的处理===============")
    # 第二步： 反序列化数据，转化为字典
    sql_data = json.loads(sql_data)
    logger.info(f"前置SQL的提取表示式是：{sql_data}")
    # 第三步： for循环k v 得到这个变量  和sql
    for k, v in sql_data.items():  # k = mobile_code, v=sql语句
        # 第四步：调用数据库封装方法，进行数据库查询操作
        sql_result = HandleMysql(**DB_CONFIG).query_data(v)  # 例如: {'mobile_code': '545821'}
        for i, j in sql_result.items():  # i = 数据库字段名字，j=查询结果数据
            # 第五步： 把查询结果存到环境变量里
            setattr(EnviData, i, j)
    logger.info(f"结果设置为环境变量后属性为：{EnviData.__dict__}")


if __name__ == '__main__':
    _sql_data = """{"mobile_code":
    "select mobile_code,user_phone from tz_sms_log where user_phone='13422337768' order by rec_date desc limit 1;"}"""
    pre_sql(_sql_data)
